Micron Document
🎖️GitЯра🎖️


Displaying Raw • Download

examples/simple_sensor/SensorMesh.h HEAD (0679dbef) Text, 6.88 KB

Tff7b72#Tff7b72pragma once

Tff7b72#Tff7b72include T8b949e<Arduino.h> T8b949e// needed for PlatformIO
Tff7b72#Tff7b72include T8b949e<Mesh.h>

Tff7b72#Tff7b72include T8b949e"TimeSeriesData.h"

Tff7b72#Tff7b72if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
Tff7b72#Tff7b72include T8b949e<InternalFileSystem.h>
Tff7b72#Tff7b72elif defined(RP2040_PLATFORM)
Tff7b72#Tff7b72include T8b949e<LittleFS.h>
Tff7b72#Tff7b72elif defined(ESP32)
Tff7b72#Tff7b72include T8b949e<SPIFFS.h>
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72include T8b949e<helpers/ArduinoHelpers.h>
Tff7b72#Tff7b72include T8b949e<helpers/StaticPoolPacketManager.h>
Tff7b72#Tff7b72include T8b949e<helpers/SimpleMeshTables.h>
Tff7b72#Tff7b72include T8b949e<helpers/IdentityStore.h>
Tff7b72#Tff7b72include T8b949e<helpers/AdvertDataHelpers.h>
Tff7b72#Tff7b72include T8b949e<helpers/TxtDataHelpers.h>
Tff7b72#Tff7b72include T8b949e<helpers/CommonCLI.h>
Tff7b72#Tff7b72include T8b949e<helpers/StatsFormatHelper.h>
Tff7b72#Tff7b72include T8b949e<helpers/ClientACL.h>
Tff7b72#Tff7b72include T8b949e<helpers/RegionMap.h>
Tff7b72#Tff7b72include T8b949e<RTClib.h>
Tff7b72#Tff7b72include T8b949e<target.h>

Tff7b72#Tff7b72define PERM_RESERVED1 (1 << 2)
Tff7b72#Tff7b72define PERM_RESERVED2 (1 << 3)
Tff7b72#Tff7b72define PERM_RESERVED3 (1 << 4)
Tff7b72#Tff7b72define PERM_RESERVED4 (1 << 5)
Tff7b72#Tff7b72define PERM_RECV_ALERTS_LO (1 << 6) T8b949e// low priority alerts
Tff7b72#Tff7b72define PERM_RECV_ALERTS_HI (1 << 7) T8b949e// high priority alerts

Tff7b72#Tff7b72ifndef FIRMWARE_BUILD_DATE
Tff7b72#Tff7b72define FIRMWARE_BUILD_DATE "14 Aug 2026"
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72ifndef FIRMWARE_VERSION
Tff7b72#Tff7b72define FIRMWARE_VERSION "v1.17.1"
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72define FIRMWARE_ROLE "sensor"

Tff7b72#Tff7b72define MAX_SEARCH_RESULTS 8
Tff7b72#Tff7b72define MAX_CONCURRENT_ALERTS 4

Te6edf3class Te6edf3SensorMesh Tff7b72: Te6edf3public Te6edf3meshTff7b72:Tff7b72:Te6edf3MeshTb4b4b4, Te6edf3public Te6edf3CommonCLICallbacks Tb4b4b4{
Te6edf3publicTff7b72:
Te6edf3SensorMeshTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3MainBoardTff7b72& Te6edf3boardTb4b4b4, Te6edf3meshTff7b72:Tff7b72:Te6edf3RadioTff7b72& Te6edf3radioTb4b4b4, Te6edf3meshTff7b72:Tff7b72:Te6edf3MillisecondClockTff7b72& Te6edf3msTb4b4b4, Te6edf3meshTff7b72:Tff7b72:Te6edf3RNGTff7b72& Te6edf3rngTb4b4b4, Te6edf3meshTff7b72:Tff7b72:Te6edf3RTCClockTff7b72& Te6edf3rtcTb4b4b4, Te6edf3meshTff7b72:Tff7b72:Te6edf3MeshTablesTff7b72& Te6edf3tablesTb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffbeginTb4b4b4(Te6edf3FILESYSTEMTff7b72* Te6edf3fsTb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffloopTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffhandleCommandTb4b4b4(Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tffa657charTff7b72* Te6edf3commandTb4b4b4, Tffa657charTff7b72* Te6edf3replyTb4b4b4)Tb4b4b4;

T8b949e// CommonCLI callbacks
Tff7b72const Tffa657charTff7b72* Td2a8ffgetFirmwareVerTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Tff7b72return Te6edf3FIRMWARE_VERSIONTb4b4b4; Tb4b4b4}
Tff7b72const Tffa657charTff7b72* Td2a8ffgetBuildDateTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Tff7b72return Te6edf3FIRMWARE_BUILD_DATETb4b4b4; Tb4b4b4}
Tff7b72const Tffa657charTff7b72* Td2a8ffgetRoleTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Tff7b72return Te6edf3FIRMWARE_ROLETb4b4b4; Tb4b4b4}
Tff7b72const Tffa657charTff7b72* Td2a8ffgetNodeNameTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3_prefsTb4b4b4.Te6edf3node_nameTb4b4b4; Tb4b4b4}
Te6edf3NodePrefsTff7b72* Td2a8ffgetNodePrefsTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return Tff7b72&Te6edf3_prefsTb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffsavePrefsTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Te6edf3_cliTb4b4b4.Te6edf3savePrefsTb4b4b4(Te6edf3_fsTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657bool Td2a8ffformatFileSystemTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffsendSelfAdvertisementTb4b4b4(Tffa657int Te6edf3delay_millisTb4b4b4, Tffa657bool Te6edf3floodTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffupdateAdvertTimerTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffupdateFloodAdvertTimerTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffsetLoggingOnTb4b4b4(Tffa657bool Te6edf3enableTb4b4b4) Te6edf3override Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8fferaseLogFileTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffdumpLogFileTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffsetTxPowerTb4b4b4(Tffa657int8_t Te6edf3power_dbmTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffformatNeighborsReplyTb4b4b4(Tffa657char Tff7b72*Te6edf3replyTb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3strcpyTb4b4b4(Te6edf3replyTb4b4b4, Ta5d6ff"Ta5d6ffnot supportedTa5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Td2a8ffformatStatsReplyTb4b4b4(Tffa657char Tff7b72*Te6edf3replyTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffformatRadioStatsReplyTb4b4b4(Tffa657char Tff7b72*Te6edf3replyTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffformatPacketStatsReplyTb4b4b4(Tffa657char Tff7b72*Te6edf3replyTb4b4b4) Te6edf3overrideTb4b4b4;
Te6edf3meshTff7b72:Tff7b72:Te6edf3LocalIdentityTff7b72& Td2a8ffgetSelfIdTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Tff7b72return Te6edf3self_idTb4b4b4; Tb4b4b4}
Tffa657void Td2a8ffsaveIdentityTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3LocalIdentityTff7b72& Te6edf3new_idTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffclearStatsTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Tb4b4b4}
Tffa657void Td2a8ffapplyTempRadioParamsTb4b4b4(Tffa657float Te6edf3freqTb4b4b4, Tffa657float Te6edf3bwTb4b4b4, Tffa657uint8_t Te6edf3sfTb4b4b4, Tffa657uint8_t Te6edf3crTb4b4b4, Tffa657int Te6edf3timeout_minsTb4b4b4) Te6edf3overrideTb4b4b4;

Tffa657float Td2a8ffgetTelemValueTb4b4b4(Tffa657uint8_t Te6edf3channelTb4b4b4, Tffa657uint8_t Te6edf3typeTb4b4b4)Tb4b4b4;

Te6edf3protectedTff7b72:
T8b949e// current telemetry data queries
Tffa657float Te6edf3getVoltageTb4b4b4(Tffa657uint8_t Te6edf3channelTb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3getTelemValueTb4b4b4(Te6edf3channelTb4b4b4, Te6edf3LPP_VOLTAGETb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657float Te6edf3getCurrentTb4b4b4(Tffa657uint8_t Te6edf3channelTb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3getTelemValueTb4b4b4(Te6edf3channelTb4b4b4, Te6edf3LPP_CURRENTTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657float Te6edf3getPowerTb4b4b4(Tffa657uint8_t Te6edf3channelTb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3getTelemValueTb4b4b4(Te6edf3channelTb4b4b4, Te6edf3LPP_POWERTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657float Te6edf3getTemperatureTb4b4b4(Tffa657uint8_t Te6edf3channelTb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3getTelemValueTb4b4b4(Te6edf3channelTb4b4b4, Te6edf3LPP_TEMPERATURETb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657float Te6edf3getRelativeHumidityTb4b4b4(Tffa657uint8_t Te6edf3channelTb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3getTelemValueTb4b4b4(Te6edf3channelTb4b4b4, Te6edf3LPP_RELATIVE_HUMIDITYTb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657float Te6edf3getBarometricPressureTb4b4b4(Tffa657uint8_t Te6edf3channelTb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3getTelemValueTb4b4b4(Te6edf3channelTb4b4b4, Te6edf3LPP_BAROMETRIC_PRESSURETb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657float Te6edf3getAltitudeTb4b4b4(Tffa657uint8_t Te6edf3channelTb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3getTelemValueTb4b4b4(Te6edf3channelTb4b4b4, Te6edf3LPP_ALTITUDETb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657bool Te6edf3getGPSTb4b4b4(Tffa657uint8_t Te6edf3channelTb4b4b4, Tffa657floatTff7b72& Te6edf3latTb4b4b4, Tffa657floatTff7b72& Te6edf3lonTb4b4b4, Tffa657floatTff7b72& Te6edf3altTb4b4b4)Tb4b4b4;

T8b949e// alerts
Tff7b72enum Te6edf3AlertPriority Tb4b4b4{ Te6edf3LOW_PRI_ALERTTb4b4b4, Te6edf3HIGH_PRI_ALERT Tb4b4b4}Tb4b4b4;

Tff7b72struct T56d364Trigger Tb4b4b4{
Tffa657uint32_t Te6edf3timestampTb4b4b4;
Te6edf3AlertPriority Te6edf3priTb4b4b4;
Tffa657uint32_t Te6edf3expected_acksTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4;
Tffa657int8_t Te6edf3curr_contact_idxTb4b4b4;
Tffa657uint8_t Te6edf3attemptTb4b4b4;
Tffa657unsigned Tffa657long Te6edf3send_expiryTb4b4b4;
Tffa657char Te6edf3textTb4b4b4[Te6edf3MAX_PACKET_PAYLOADTb4b4b4]Tb4b4b4;

Te6edf3TriggerTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3textTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72= T79c0ff0Tb4b4b4; Tb4b4b4}
Tffa657bool Te6edf3isTriggeredTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return Te6edf3textTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72!Tff7b72= T79c0ff0Tb4b4b4; Tb4b4b4}
Tb4b4b4}Tb4b4b4;
Tffa657void Td2a8ffalertIfTb4b4b4(Tffa657bool Te6edf3conditionTb4b4b4, Te6edf3TriggerTff7b72& Te6edf3tTb4b4b4, Te6edf3AlertPriority Te6edf3priTb4b4b4, Tff7b72const Tffa657charTff7b72* Te6edf3textTb4b4b4)Tb4b4b4;

Te6edf3virtual Tffa657void Te6edf3onSensorDataReadTb4b4b4(Tb4b4b4) Tff7b72= T79c0ff0Tb4b4b4; T8b949e// for app to implement
Te6edf3virtual Tffa657int Te6edf3querySeriesDataTb4b4b4(Tffa657uint32_t Te6edf3start_secs_agoTb4b4b4, Tffa657uint32_t Te6edf3end_secs_agoTb4b4b4, Te6edf3MinMaxAvg Te6edf3destTb4b4b4[Tb4b4b4]Tb4b4b4, Tffa657int Te6edf3max_numTb4b4b4) Tff7b72= T79c0ff0Tb4b4b4; T8b949e// for app to implement
Te6edf3virtual Tffa657bool Te6edf3handleCustomCommandTb4b4b4(Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tffa657charTff7b72* Te6edf3commandTb4b4b4, Tffa657charTff7b72* Te6edf3replyTb4b4b4) Tb4b4b4{ Tff7b72return Tffa657falseTb4b4b4; Tb4b4b4}

T8b949e// Mesh overrides
Tffa657float Te6edf3getAirtimeBudgetFactorTb4b4b4(Tb4b4b4) Tff7b72const Te6edf3overrideTb4b4b4;
Tffa657bool Td2a8ffallowPacketForwardTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657int Td2a8ffcalcRxDelayTb4b4b4(Tffa657float Te6edf3scoreTb4b4b4, Tffa657uint32_t Te6edf3air_timeTb4b4b4) Tff7b72const Te6edf3overrideTb4b4b4;
Tffa657uint32_t Td2a8ffgetRetransmitDelayTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657uint32_t Td2a8ffgetDirectRetransmitDelayTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657int Td2a8ffgetInterferenceThresholdTb4b4b4(Tb4b4b4) Tff7b72const Te6edf3overrideTb4b4b4;
Tffa657bool Td2a8ffgetCADEnabledTb4b4b4(Tb4b4b4) Tff7b72const Te6edf3overrideTb4b4b4;
Tffa657int Td2a8ffgetAGCResetIntervalTb4b4b4(Tb4b4b4) Tff7b72const Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffonAnonDataRecvTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3secretTb4b4b4, Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3IdentityTff7b72& Te6edf3senderTb4b4b4, Tffa657uint8_tTff7b72* Te6edf3dataTb4b4b4, Tffa657size_t Te6edf3lenTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657int Td2a8ffsearchPeersByHashTb4b4b4(Tff7b72const Tffa657uint8_tTff7b72* Te6edf3hashTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffgetPeerSharedSecretTb4b4b4(Tffa657uint8_tTff7b72* Te6edf3dest_secretTb4b4b4, Tffa657int Te6edf3peer_idxTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffonPeerDataRecvTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4, Tffa657uint8_t Te6edf3typeTb4b4b4, Tffa657int Te6edf3sender_idxTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3secretTb4b4b4, Tffa657uint8_tTff7b72* Te6edf3dataTb4b4b4, Tffa657size_t Te6edf3lenTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657bool Td2a8ffonPeerPathRecvTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4, Tffa657int Te6edf3sender_idxTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3secretTb4b4b4, Tffa657uint8_tTff7b72* Te6edf3pathTb4b4b4, Tffa657uint8_t Te6edf3path_lenTb4b4b4, Tffa657uint8_t Te6edf3extra_typeTb4b4b4, Tffa657uint8_tTff7b72* Te6edf3extraTb4b4b4, Tffa657uint8_t Te6edf3extra_lenTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffonControlDataRecvTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffonAckRecvTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4, Tffa657uint32_t Te6edf3ack_crcTb4b4b4) Te6edf3overrideTb4b4b4;
Te6edf3virtual Tffa657bool Te6edf3handleIncomingMsgTb4b4b4(Te6edf3ClientInfoTff7b72& Te6edf3fromTb4b4b4, Tffa657uint32_t Te6edf3timestampTb4b4b4, Tffa657uint8_tTff7b72* Te6edf3dataTb4b4b4, Tffa657uint8_t Te6edf3flagsTb4b4b4, Tffa657size_t Te6edf3lenTb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffsendAckToTb4b4b4(Tff7b72const Te6edf3ClientInfoTff7b72& Te6edf3destTb4b4b4, Tffa657uint32_t Te6edf3ack_hashTb4b4b4, Tffa657uint8_t Te6edf3path_hash_sizeTff7b72=T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3privateTff7b72:
Te6edf3FILESYSTEMTff7b72* Te6edf3_fsTb4b4b4;
Tffa657unsigned Tffa657long Te6edf3next_local_advertTb4b4b4, Te6edf3next_flood_advertTb4b4b4;
Te6edf3NodePrefs Te6edf3_prefsTb4b4b4;
Te6edf3ClientACL Te6edf3aclTb4b4b4;
Te6edf3CommonCLI Te6edf3_cliTb4b4b4;
Tffa657uint8_t Te6edf3reply_dataTb4b4b4[Te6edf3MAX_PACKET_PAYLOADTb4b4b4]Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3dirty_contacts_expiryTb4b4b4;
Te6edf3CayenneLPP Te6edf3telemetryTb4b4b4;
Te6edf3TransportKeyStore Te6edf3key_storeTb4b4b4;
Te6edf3RegionMap Te6edf3region_mapTb4b4b4;
Te6edf3TransportKey Te6edf3default_scopeTb4b4b4;
Tffa657uint32_t Te6edf3last_read_timeTb4b4b4;
Tffa657int Te6edf3matching_peer_indexesTb4b4b4[Te6edf3MAX_SEARCH_RESULTSTb4b4b4]Tb4b4b4;
Tffa657int Te6edf3num_alert_tasksTb4b4b4;
Te6edf3TriggerTff7b72* Te6edf3alert_tasksTb4b4b4[Te6edf3MAX_CONCURRENT_ALERTSTb4b4b4]Tb4b4b4;
Tffa657unsigned Tffa657long Te6edf3set_radio_atTb4b4b4, Te6edf3revert_radio_atTb4b4b4;
Tffa657float Te6edf3pending_freqTb4b4b4;
Tffa657float Te6edf3pending_bwTb4b4b4;
Tffa657uint8_t Te6edf3pending_sfTb4b4b4;
Tffa657uint8_t Te6edf3pending_crTb4b4b4;

Tffa657uint8_t Td2a8ffhandleLoginReqTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3IdentityTff7b72& Te6edf3senderTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3secretTb4b4b4, Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3dataTb4b4b4, Tffa657bool Te6edf3is_floodTb4b4b4)Tb4b4b4;
Tffa657uint8_t Td2a8ffhandleRequestTb4b4b4(Tffa657uint8_t Te6edf3permsTb4b4b4, Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tffa657uint8_t Te6edf3req_typeTb4b4b4, Tffa657uint8_tTff7b72* Te6edf3payloadTb4b4b4, Tffa657size_t Te6edf3payload_lenTb4b4b4)Tb4b4b4;
Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Td2a8ffcreateSelfAdvertTb4b4b4(Tb4b4b4)Tb4b4b4;

Tffa657void Td2a8ffsendAlertTb4b4b4(Tff7b72const Te6edf3ClientInfoTff7b72* Te6edf3cTb4b4b4, Te6edf3TriggerTff7b72* Te6edf3tTb4b4b4)Tb4b4b4;

Tff7b72#Tff7b72if ENV_INCLUDE_GPS == 1
Tffa657void Td2a8ffapplyGpsPrefsTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3sensorsTb4b4b4.Te6edf3setSettingValueTb4b4b4(Ta5d6ff"Ta5d6ffgpsTa5d6ff"Tb4b4b4, Te6edf3_prefsTb4b4b4.Te6edf3gps_enabledTff7b72?Ta5d6ff"Ta5d6ff1Ta5d6ff"Tff7b72:Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif
Tb4b4b4}Tb4b4b4;

Served by rngit 1.5.0 - Generated in 0.1s